@mixin arrow-control {
    width: 10%;
    min-width: $Carousel-arrowControl-width;
    height: 100%;
    cursor: pointer;
    position: absolute;
    transition-duration: $Carousel-transitionDuration;
    svg {
        position: absolute;
        top: 50%;
        left: 50%;
        right: 50%;
        transform: translate(-50%, -50%);
        width: $Carousel-svg-width;
        height: $Carousel-svg-height;
    }
}

.#{$ns}Carousel {
    min-width: $Carousel-minWidth;
    height: $Carousel-height;
    position: relative;
    display: block;
    background: $Carousel-bg;

    &.#{$ns}Carousel--light {
        .#{$ns}Carousel-dot {
            background-color: $Carousel--light-control;
        }

        svg {
            fill: $Carousel--light-control;
        }

        .#{$ns}Carousel-item {
            .title,
            .description {
                color: $Carousel--light-control;
            }
        }
    }

    &.#{$ns}Carousel--dark {
        .#{$ns}Carousel-dot {
            background-color: $Carousel--dark-control;
        }

        svg {
            fill: $Carousel--dark-control;
        }

        .#{$ns}Carousel-item {
            .title,
            .description {
                color: $Carousel--dark-control;
            }
        }
    }

    &-container {
        width: 100%;
        height: 100%;
        position: relative;
        overflow: hidden;

        .#{$ns}Carousel-item {
            width: 100%;
            height: 100%;
            position: absolute;
            transition: ease-out all $Carousel-transitionDuration;

            &.fade {
                opacity: 0;
            }

            &.fade.in {
                opacity: 1;
            }

            &.slide {
                transform: translateX(100%);
            }

            &.slide.in {
                transform: translateX(0);
            }

            &.slide.out {
                transform: translateX(-100%);
            }

            &.slideRight {
                transform: translateX(-100%);
            }

            &.slideRight.in {
                transform: translateX(0);
            }

            &.slideRight.out {
                transform: translateX(100%);
            }

            .title {
                position: absolute;
                bottom: $Carousel-imageTitle-bottom;
                text-align: center;
                width: 100%;
                opacity: 0.8;
            }

            .description {
                position: absolute;
                bottom: $Carousel-imageDescription-bottom;
                text-align: center;
                width: 100%;
                opacity: 0.8;
            }

            .image {
                width: 100%;
                height: 100%;
                background-size: cover;
            }
        }
    }

    &-dotsControl {
        position: absolute;
        bottom: 0px;
        width: 100%;
        z-index: 100;
        text-align: center;

        .#{$ns}Carousel-dot {
            display: inline-block;
            height: $Carousel-dot-width;
            width: $Carousel-dot-height;
            border-radius: $Carousel-dot-borderRadius;
            margin: $Carousel-dot-margin;
            transition-duration: $Carousel-transitionDuration;
            opacity: 0.3;

            &.is-active {
                opacity: 1;
            }
        }
    }

    &-arrowsControl {
        position: absolute;
        width: 100%;
        height: inherit;
        z-index: 100;
        text-align: center;

        .#{$ns}Carousel-leftArrow {
            @include arrow-control;
            left: 0;
        }

        .#{$ns}Carousel-rightArrow {
            @include arrow-control;
            right: 0;
        }
    }
}